Component({
    /**
     * 组件的属性列表
     */
    properties: {
        goods: {
            type: Object
        },
        show: {
            type: Boolean,
            value: false
        },
        showAdd: {
            type: Boolean,
            value: true
        },
        showBuy: {
            type: Boolean,
            value: true
        },
    },

    /**
     * 组件的初始数据
     */
    data: {
        goodsNum: 1,

        skus: [],
        selectSku: null
    },

    observers: {
        'goods': function (goods) {
            this.skus(goods)
        }
    },

    /**
     * 组件的方法列表
     */
    methods: {

        skus(goods) {
            let skus = []
            let selectSku = null
            let index = 0
            if(goods.skus) {
                goods.skus.forEach(item => {
                    if(item.stockNum > 0) {
                        if (index == 0) {
                            item.checked = true
                            selectSku = item
    
                            // 子传父
                            selectSku.goodsNum = this.data.goodsNum
                            this.triggerEvent("checkedGoodsSku", selectSku)
                        } else {
                            item.checked = false
                        }
                        index++
                    }
                    skus.push(item)
                })
    
                this.setData({ skus, selectSku, goodsNum: 1 })
            }
        },

        /**
         * 用户选中规格
         * @param {*} e 
         */
        choseSpecItem(e) {
            let { id } = e.currentTarget.dataset
            let { skus, selectSku } = this.data

            skus.forEach(item => {
                if (item.id == id) {
                    item.checked = true
                    selectSku = item
                } else {
                    item.checked = false
                }
            })

            this.setData({ skus, selectSku, goodsNum: 1 })

            // 子传父
            selectSku.goodsNum = this.data.goodsNum
            this.triggerEvent("checkedGoodsSku", selectSku)
        },

        /**
         * 执行父组件函数
         * 加入购物车/立即购买
         * @param {*} e 
         */
        onClick(e) {
            let { selectSku, goodsNum } = this.data
            let { type } = e.currentTarget.dataset
            selectSku.goodsNum = goodsNum
            this.triggerEvent(type, selectSku)
        },

        onClose() {
            this.setData({ show: false });
        },

        onChange(e) {
            this.setData({ goodsNum: e.detail })
        },
    }
})
